{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=np.empty((100,2))\n",
    "X[:,0]=np.random.uniform(0.,100.,size=100)\n",
    "X[:,1]=0.75*X[:,0]+3.+np.random.normal(0.,10.,size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2WElEQVR4nO3df3SU5Z338c8kkIRfGSQeMkGDptQuRKyICEQ47nk0rHQpxcppVxd60Hp0i2hFulVpi5T1B+K21mpdrDyK7YPI1rP+KLZmjw8oXbrhhyBu01h0MVUeTMIKMoPQBJq5nz/ojEwyk5l75v4979c5OafM3JlcXinc3/v6fq/vFTIMwxAAAIBDStweAAAAKC4EHwAAwFEEHwAAwFEEHwAAwFEEHwAAwFEEHwAAwFEEHwAAwFEEHwAAwFED3B5Ab/F4XB9++KGGDRumUCjk9nAAAEAODMPQ0aNHNWrUKJWU9L+24bng48MPP1Rtba3bwwAAAHnYv3+/zj777H6v8VzwMWzYMEmnBl9ZWenyaAAAQC5isZhqa2uT9/H+eC74SKRaKisrCT4AAPCZXEomKDgFAACOIvgAAACOIvgAAACOIvgAAACOIvgAAACOIvgAAACOIvgAAACOIvgAAACO8lyTMQAAilVP3NCOtsM6eLRLI4dVaHLdCJWWBO+cM4IPAAA8oKmlXSs2tqo92pV8rSZcoeWz6zVzfI2LI7MeaRcAAFzW1NKuhet2pwQektQR7dLCdbvV1NLu0sjsQfABAICLeuKGVmxslZHmvcRrKza2qiee7gp/IvgAAMBFO9oO91nxOJ0hqT3apR1th50blM0IPgAAcNHBo5kDj3yu8wOCDwAAXDRyWIWl1/kBwQcAAC6aXDdCNeEKZdpQG9KpXS+T60Y4OSxbEXwAAOCi0pKQls+ul6Q+AUjiz8tn1weq3wfBBwAALps5vkar509UJJyaWomEK7R6/sTA9fmgyRgAAB4wc3yNZtRH6HAKAACcU1oSUsOYKreHYTvSLgAAwFEEHwAAwFEEHwAAwFEEHwAAwFEEHwAAwFEEHwAAwFEEHwAAwFH0+QAA4C964kZRNPlyG8EHAACSmlratWJjq9qjnx5dXxOu0PLZ9YFrb+420i4AgKLX1NKuhet2pwQektQR7dLCdbvV1NLu0siCieADAFDUeuKGVmxslZHmvcRrKza2qiee7grkg+ADAFDUdrQd7rPicTpDUnu0SzvaDjs3qIAj+AAAFLWDRzMHHvlch+wIPgAARW3ksApLr0N2BB8AgKI2uW6EasIVyrShNqRTu14m141wcliBRvABAChqpSUhLZ9dL0l9ApDEn5fPrqffh4UIPgAARW/m+Bqtnj9RkXBqaiUSrtDq+RPp82ExmowBAKBTAciM+ggdTh1A8AEAwF+UloTUMKbK7WEEHmkXAADgKIIPAADgKIIPAADgKIIPAADgKIIPAADgKIIPAADgKIIPAADgKIIPAADgKJqMAQBs0xM36BiKPgg+AAC2aGpp14qNrWqPdiVfqwlXaPns+rzPSiGYCQaCDwCA5Zpa2rVw3W4ZvV7viHZp4brdeR3WZkcwA3dQ8wEAsFRP3NCKja19Ag9JyddWbGxVTzzdFeklgpnTAw/p02CmqaU9/wHDcQQfAABL7Wg73CdIOJ0hqT3apR1th3P6PDuCGbiL4AMAYKmDRzMHHvlcZ3UwA/cRfAAALDVyWIWl11kdzMB9BB8AAEtNrhuhmnCFMu1BCelUoejkuhE5fZ7VwQzcZyr46Onp0bJly1RXV6dBgwZpzJgxuueee2QYn+bZDMPQ3XffrZqaGg0aNEiNjY169913LR84AMCbSktCWj67XpL6BCCJPy+fXZ/zFlmrgxm4z1TwsWrVKq1evVo/+clP9Pbbb2vVqlV68MEH9eijjyavefDBB/XII4/o8ccf1/bt2zVkyBBdeeWV6upiOQwAisXM8TVaPX+iIuHU1YhIuML0Nlurgxm4L2ScvmyRxRe/+EVVV1frySefTL42d+5cDRo0SOvWrZNhGBo1apS+9a1v6R//8R8lSdFoVNXV1Xr66ad1zTXXZP0ZsVhM4XBY0WhUlZWVefwnAQC8wsqmYPT58DYz929TTcYuvfRSPfHEE3rnnXf0uc99Tm+99Za2bt2qhx56SJLU1tamjo4ONTY2Jr8nHA5rypQpam5uTht8dHd3q7u7O2XwAIBgKC0JqWFMlSWfNXN8jWbUR+hwGgCmgo+77rpLsVhMY8eOVWlpqXp6enTfffdp3rx5kqSOjg5JUnV1dcr3VVdXJ9/rbeXKlVqxYkU+YwcAFBkrgxm4x1TNxy9+8Qs988wzWr9+vXbv3q2f/exn+sEPfqCf/exneQ9g6dKlikajya/9+/fn/VkAAMD7TK18fPvb39Zdd92VTJ9ccMEFev/997Vy5UotWLBAkUhEktTZ2amamk/zb52dnZowYULazywvL1d5eXmewwcAAH5jauXj+PHjKilJ/ZbS0lLF43FJUl1dnSKRiDZt2pR8PxaLafv27WpoaLBguAAAwO9MrXzMnj1b9913n0aPHq3zzz9fb775ph566CF9/etflySFQiEtXrxY9957r8477zzV1dVp2bJlGjVqlK666io7xg8AAHzGVPDx6KOPatmyZbr55pt18OBBjRo1Sv/wD/+gu+++O3nNHXfcoWPHjummm27SkSNHNH36dDU1Namigs5zAIDiYeU246Ax1efDCfT5AAD4XTH2JDFz/+ZsFwAALNTU0q6F63b3OYm3I9qlhet2q6ml3aWReQfBBwAAFumJG1qxsVXpUgqJ11ZsbFVP3FNJB8cRfAAAYJEdbYf7rHiczpDUHu3SjrbDzg3Kgwg+AACwyMGjuR2imut1QUXwAQCARUYOy21nZ67XBZWprbYAABSjXLfNTq4boZpwhTqiXWnrPkKSIuFT31/MCD4AAOiHmW2zpSUhLZ9dr4XrdiskpQQgiVBl+ez6ou/3QdoFAIAM8tk2O3N8jVbPn6hIODW1EglXaHHj59T957ia9x1yZcdLT9xQ875DemnPAdfGINFkDACAtHrihqav2pxx90oihbL1zsvTrmScnqr540fH9OyOD9QR606+73TTMbsbn9FkDACAAhW6bba0JKSGMVUqH1Cih//vuymBh+Rs0zGvNT4j+AAAIA0rts16oemYF8bQG8EHAABpWLFt1gtNx7wwht4IPgAASCOxbTbTvpSQTtVM9Ldt1gtNx7wwht4IPgAASCOxbVZSnwAk122zXmg65oUx9EbwAQBABv1tm109f2LWXSJWrJ4Uygtj6I0mYwAA9GPm+BrNqI/k1OG0Ny80HfPCGHqjzwcAADazu8eGF8Zg5v5N8AEAgANyPR/Gr2Mwc/8m7QIAgAMSTceKfQwSBacAAMBhBB8AAMBRBB8AAMBR1HwAAOABXihIdQrBBwAALvPCVlwnkXYBAMBFXjvu3gkEHwDgUz1xQ837DumlPQfUvO+Qo0eiwxpePO7eCaRdAMCHim2ZPqjMHHfvhf4cVmHlAwB8phiX6YPKi8fdO4HgAwB8pFiX6YPKi8fdO4HgAwB8xMwyPbzPi8fdO4HgAwB8pFiX6YMqcdy9pLQBiCFp2Sxnj7t3AsEHAPhIsS7TB9nM8TVaPX+iIuH0v7N7ftUauDoegg8A8JF8lunZkut9M8fXaNmscWnfC2IhMVttAcBHEsv0C9ftVkhKKTxNBCTLZ3+6TM+W3FRebWHeEzd0z6/eTvueoVO/2xUbWzWjPuKJ8RaK4AMAfCaxTN87qIj0CioSW3J7r3MknqRXz59YVAGIlwOxYuv3QfABAD40c3yNZtRHMj7FZ9uSG7Qn6Wy8HogVWyExwQcA+FRpSSjjU3CxPUn3x+uBWE/c0EdHu3O6NiiFxAQfABBAxfYk3R8vB2LpUkHphHQqrRaUfh8EHwAQQGzJ/ZRXA7FMqaDe0hUS+x1bbQEggIq1c2Y6XgzE+ksF9RYJV7hek2I1Vj4AwGV2bP80uyXXz7LNXyIQ64h2pb3Zu5HSyJYKSlg2a5yum1YXiN/T6Qg+AMBFdm7/zHVLrp/lMn9eDMRyTfGcOaw8cIGHJIUMw/BUq7tYLKZwOKxoNKrKykq3hwMAtsmU80/caqxaavdqY61CmZ0/L/X5aN53SNeu2Zb1umdvnOqb3Uhm7t+sfACAC5zc/tnflly/ymf+svVGcZIXU0FOouAUAFxgZvsn+sp3/hKB2JwJZ6lhTFXWwMOuc3H6O802aDU56bDyAQAu8Or2T79wYv7sTtMUQ01OJgQfAOACL27/tIsdNSd2z59T7di9lApyEsEHALigWHL+dq0e2Dl/TrdjD2JNTjbUfACAC4oh559YPehdm5FYPWhqac/7s+2cP+px7EfwAQAuSeT8I+HU1EAQOlpmWz2QTq0e5FLAmano0675ox7HfqRdAMBFQc35W3WYW7a0jR3zV0z1OG4h+AAAlwUx52/F6kGuRZ9Wz1+x1OO4yXTa5cCBA5o/f76qqqo0aNAgXXDBBXrjjTeS7xuGobvvvls1NTUaNGiQGhsb9e6771o6aADwM7t6R3hJoasHVqZtzCqGehy3mQo+Pv74Y02bNk0DBw7UK6+8otbWVv3whz/UGWeckbzmwQcf1COPPKLHH39c27dv15AhQ3TllVeqq4vcGAA0tbRr+qrNunbNNt22YY+uXbNN01dtLqj40osKPVXX7aLPINfjeIGptMuqVatUW1urtWvXJl+rq6tL/m/DMPTwww/re9/7nubMmSNJ+vnPf67q6mq9+OKLuuaaaywaNgD4j1O9I7yg0MPcvFD0GdR6HC8wtfLxy1/+UpMmTdJXvvIVjRw5UhdddJHWrFmTfL+trU0dHR1qbGxMvhYOhzVlyhQ1Nzen/czu7m7FYrGULwAIGjfTCG4pZPXAK0WfZtuxIzemVj7ee+89rV69WkuWLNF3vvMd7dy5U9/85jdVVlamBQsWqKOjQ5JUXV2d8n3V1dXJ93pbuXKlVqxYkefwAcAfrNr94Tf5rh5Q9Bnc04glk8FHPB7XpEmTdP/990uSLrroIrW0tOjxxx/XggUL8hrA0qVLtWTJkuSfY7GYamtr8/osAPAqL6QR3JLPbpRC0zZmee1Gb/e5Mm4zFXzU1NSovr4+5bVx48bp3/7t3yRJkUhEktTZ2amamk8np7OzUxMmTEj7meXl5SovLzczDADwHa+kEfzEqYPXvHajz1Yb9NjfT9QZQ8o8Eyjlw1TwMW3aNO3duzfltXfeeUfnnHOOpFPFp5FIRJs2bUoGG7FYTNu3b9fChQutGTEA+JDf0whurQzYXfTptSLgXGqDbnl2t04vDfLjioip4OP222/XpZdeqvvvv19f/epXtWPHDj3xxBN64oknJEmhUEiLFy/Wvffeq/POO091dXVatmyZRo0apauuusqO8QOALzidRrBSLisDdgYndjVhc/oAuVxkqw2SpN41yX7cLWUq+Ljkkkv0wgsvaOnSpfqnf/on1dXV6eGHH9a8efOS19xxxx06duyYbrrpJh05ckTTp09XU1OTKipYSgRQ3JxKI1gpl5UBSZ5KW+TKi0XA+dT8uBUoFSJkGIan9nXFYjGFw2FFo1FVVla6PRwAsJzXihsz6Ykbmr5qc8YbdEhSePBARY+f7BOcJP5rvPw0/tKeA7ptw56s1/34mgmaM+Es+wckqXnfIV27Zlve3//sjVNd2y1l5v7N2S4A4DC/nOWSy8rAkeMnM77n9adxLxYBZ6sNysYvu6VMn+0CACgOhd7I7G6BXqhCW8Dbob9zZXLhl91SBB8AUIAgHxJn1Y3Mq0/j2Q6QMyR9YfypnTZO/l4zdYbtb/HIjUCpEKRdACBPXusPYbVCUwAJXn4az1QEHApJhiE99ds/6qnf/tHx32u6LcYfH+vWovVvSvLXbql0KDgFgDxk2gWScHvj53TL5Z/1zc0gk8R/p9T3hmdIGp6h4DRxTSRcoa13Xu75eUgUAf/f1g49+ds/9nnfKwW0Xg54zdy/CT4AwKRsu0ASIpXl+v6Xznf9plCo/m54kjIGJ5L7N2szctnd44VgqiduaNu+Q2p+7yNJp4qXp37G/UPvCD6AIuGXLZtBY2Y7ZEj+ugFn0t//17z8NG5Grr9XN7ezSt6db7baAkXAq/8AFQOzBZRe3m7an1yDW7tboDvFD4f/ea0dfL4IPgAfCso/QH5lpoDSjS6ZVjAb3Pqld0l/vNj343RebAefL7baAj6Ty8FTKza2BmrLp9d8fKy7322P6XRE/+SbLbmJ4LZ37UMiuG1qaXdpZPbyYt+P05lpB+91rHwAPuPF8yiKSVNLuxatf9P01tN7fvW2Dh87kfyzV1NkQXq6Nsvrh//5IS2UK1Y+AJ8J0j9AftPfjTmb0wMPyburCEF6us5HpgZfkXCF6+lMr6eFzGDlA/CZIP0D5Cc9cUNP/7Yt6/baXHl1FYHg1rsFtNmaviW2AvuhyynBB+AzQfoHyC/SFV/mYsSQgTp8LP3Ba5I3U2QEt6d4sYDW62khM0i7AD6T7TwKyT//APlBpuLL/tzyvz6rZ2+cqmVfPD+n6720iuD1osti5+W0kBmsfAA+lOk8iohHixh780tzNLM1HolVp9tnfE6lJSE17zuU0/d5aRUhSE/XQeXVtJAZBB+AT/n1HyA/NUfLVnx5unQ3Zr+myPwe3BYDL6aFzCD4AHzMb/8A+a05mpl0SLobs59XEfwa3MIfCD4AOMKP/SNyTYcsmzVO102ry9h6vL9VhBn1ETXvO+TJG7zfglv4B8EHAEf4sTlarmmTTIFHQqZVhFdbO/qcourVFBRgJXa7AHCEH/tHWLmzKLGKMGfCWWoYU6VXWzuKsoU5IBF8AHCIX/tH5Lu1sSduZDzLhfN5UOxIuwBwhF93fkjmiy+z7ejxYwoKsBLBBwBH+Hnnh5R78WUuO3q6/xzP6Wd6KQVVCL/0dYFzCD4AOCbo/SNy3dHzg69cmNPneS0FlQ8/9XWBcwg+ADgqyP0jck2nyJBvU1Bm+K2vC5xDwSkAx/Xe+RGEwEPKPU3y0bHuwJ/PQ1Et+kPwAQAWMbOjJwgHhPW3o8dMUS2KD2kXALCI2R09fk5BZavl8GNfFziHlQ8AsEg+Tcn8mIJK1HL01yDNr31d4AyCDwCwSE/cUHhQma6fdq7OGFKW8p6f0in9ybWW4+JzzlBNuKJPEJYQ0qmVEr8X1SI/pF2AIkGvBXulS0OMGDJQX55wlhrrI4GZ71xrOXa9/7Ev+rrw98IdBB9AEaDXgr0ybSn9+NhJPfXbP+qSAN3QzNRyzJlwlqf7uvD3wj0EH0DAWdFrIchPh4X+t+XaWGxGfSQQc2a2lsOrRbX0IHEXwQcQYFbcGIP8dGjFf1uxndOSzxk9ubamd0qxBYxeRMEpEGCF9lrIZVeDX1n131ZsW0rz2dHjNfQgcR/BBxBghdwYc93V8Nt3P0rbZMrLrOy+WYxbSv3eIK3YAkYvIu0CBFghN8Zcnw7nPbk9+Zpf0jFWpkrySUMEgVdrOXJRjAGj17DyAQRY4saYT6+FfJ76/JKOsfLJNwhpiHz5sUGaVNjfC1iD4AMIkN5nbUjK+8aYz1OfXw4Ms/rJ1+9piGJTzAGjV5B2AQKiv50b+fRayJZOyMQPuzvsSJX4OQ1RjBIBo1d7kARdyDAMTz2exGIxhcNhRaNRVVZWuj0cICdu98HI1LMgMYLV8yfmdWNMfK4kUwGIJP34mgmaM+Esk9/lnEz/bafPGTeg4HP7726QmLl/E3wABXK7D0ZP3ND0VZszFlAmnuK33nl5Xv+opvvvy8WzN0717MpHgtu/OyBICD4Ah+Sy4mD3Tax53yFdu2Zb1usKCQZOfzo8c2i5vvWLPeqMdfebssg32HEaT76ANczcv6n5APLklS6JTvQs6N2h8vtfOt/zB4blymvdN4FiwG4XIE9e6ZLoRs8CdncAKAQrH0CevNIl0ezODavSDOzuAJAvgg8gT17pkpjoWZBLGsTqAktSFsWBuhhYjeADyJOX2mrn0rOAI8SRD3YEwQ7sdgEK4LVeEZmeUO3ejgt32bUy4YXdXPAPdrsADvFal8RMaRArD1KDt9i1MuGV3VwIJoIPoEB+KLz0SnEsrGVnKo2AFXYqaKvtAw88oFAopMWLFydf6+rq0qJFi1RVVaWhQ4dq7ty56uzsLHScgKd5/XRPrxTHwjrZViakwg74I2CFnfIOPnbu3Kmf/vSn+vznP5/y+u23366NGzfqueee05YtW/Thhx/q6quvLnig8Jfep6t6+YTTYsAR4sFjd58ZAlbYKa+0yyeffKJ58+ZpzZo1uvfee5OvR6NRPfnkk1q/fr0uv/xySdLatWs1btw4bdu2TVOnTrVm1PA0quO9x8x2XPiD3SsTXtrNheDJa+Vj0aJFmjVrlhobG1Ne37Vrl06ePJny+tixYzV69Gg1Nzen/azu7m7FYrGUL/hXIgfd+4kskYNuaml3aWSgK2mw2L0ykQhYJfVZMSNgRaFMr3xs2LBBu3fv1s6dO/u819HRobKyMg0fPjzl9erqanV0dKT9vJUrV2rFihVmhwEPojre+6wqjqXplPucWJnw2m4uBIep4GP//v267bbb9Oqrr6qiwpo839KlS7VkyZLkn2OxmGpray35bDiL6nh/KLQrKWk1b3AqleaH3VzwH1Npl127dungwYOaOHGiBgwYoAEDBmjLli165JFHNGDAAFVXV+vEiRM6cuRIyvd1dnYqEomk/czy8nJVVlamfMGfqI4PPjvSahQn58+pVJrXd3PBf0ytfFxxxRX63e9+l/La9ddfr7Fjx+rOO+9UbW2tBg4cqE2bNmnu3LmSpL179+qDDz5QQ0ODdaOGJ1EdH2x2pNVYRSkcKxPwI1PBx7BhwzR+/PiU14YMGaKqqqrk6zfccIOWLFmiESNGqLKyUrfeeqsaGhrY6VIEqI4PNqvTapw1Yx0O+IPfFNRkLJ0f/ehH+uIXv6i5c+fqsssuUyQS0fPPP2/1j4EHUR0fbFam1exukAXA2wpur/7666+n/LmiokKPPfaYHnvssUI/Gj5EdXwwpNvNYmVajeJkoLhxtgssl8hBb3vvkJr3HZJkqOEzZ2oqNxFfSFeHMWJImeZMGKURQwbq8LGTab/PTFqtmIuT2aYMEHzAJq+2dqTcwH7y2j4KCX0gUx3G4WMntPa3f8z4fWbTasVanEyBLXCK5TUfAF1O/am/OoxszG7tLMazZvh7AXyK4AOWopDQv7LVYZwuJKlqSJl+9NUL9eyNU7X1zstNPbkXW3Eyfy+AVAQfsJTdJ23CPmbqKwxJh46dUCQ8KO+mU8V01gx/L4BU1HzAUsVcSOg3vQsfzxxabvozCv09FkuDLP5eAKkIPmCpYi0k9KpMOyvSFT5GKss1fPBARY+fzLnuw4rfYzE0yOLvBZCK4AOWosupd2TaWfGlC2v0xG/a+vx+OmPdydd6H1TWG79Hc/h7AaSi5gOWKrZCQq/qb2fFT9MEHtKn57MMHzxQ1ZWZn8D5PZrH3wsgFcEHLFdMhYRelMvOikwMSUeOn9QPv3JqF8sN087ViCEDU67h95gf/l4AnwoZhuGpvV2xWEzhcFjRaFSVlZVuDwcFoJNjenbPS/O+Q7p2zbaCPuPH10zQnAlnSeL3aDXmE0Fl5v5NzQdsUwyFhGY50eHSih0Tpxc+8nu0FvMJkHYBHONUh8tCdkwEsbMoAO8h+IAn9cQNNe87pJf2HFDzvkO+7/zoZIfLbK3LM6HwEYBTSLvAc4J4+JaTR8gndlYsXLe7z5bZREhx02V1+uVb7al9Pnw+xwD8g+ADnpLpVNVEasLqXQFOFf853eEysbOiTyOx0wKMO2aOo/ARgCsIPuAZ2VITIZ1KTcyoj1hyk3RyhaWQDpf5BkjZWpdT+AjALQQf8AwnUxNOr7Dk2+Gy0ACJAKN/bHsF3EHwAc9wKjXh1ApL7xvbslnjtGj9mxnrMHoXejodIBWbINYWAX5B8AHPcOrwLSdWWDLd2HIt9HQ6BVVsCOwAdxF8wDOcOnzL7hWW/m5sT/ymTY/9/USdMaSs36V+J1NQxYbADnAffT7guEw9PJw6fMvOFZZc+nnc86tWTa4boTkTzlLDmKq0/z1O744pJmYCOwD2YOUDjsqWZ89li2ih7FxhyXfFond9yJlDy3P6eYWmoIoRgR3gPoIPOCbXPHu2LaKFyqUJV74rLPnc2NIFZJHKcg0fPFDR4ydtTUEVI6dqiwBkRtoFjjDbXjyxRbS/1EQh7Dre3OyNLdN5L52xbh35S+BhZwqqGGVrP8/5NoD9WPmAI7xYQGnHCouZlE4uhY/hwQNVMaBUHTHaoFvFzpUvALkh+IAjvJpnt7oJl5kbW/O+Q1kDsiPHT+qZGyaqpCTky0ZYXm3i5URtEYDMCD7giGLKs+d6Y8s10ProWLfmTDjLlrHayetNvOyuLQKQGcEHHOFUDw87ZXqKT/d6Lje2IAdkfmniRft5wB0EH3CE3/PsmZ7iv3RhTZ+Opac/3fd3YwtCQJYOTbwAZMNuFzjGrh0mdsu0I6U92qWf/qatz+uJp/umlvZ+P9eppmpOo4kXgGxY+YCj/JZn7+8pPhMzT/dBLHz0anExAO8g+IDj/JRnz/YUn4mZrcN+C8iyCXItCwBrEHwA/Sj06TzX7/dTQJZNUGtZAFiHmg+gH4U+nRfj031Qa1kAWIfgA76S6URcu2Rrxd2fYm7R7dfiYgDOIO0C33CjaVV/W4SzWTZrXFE/3QetlgWAdVj5gC9k2u6a67bWQmR6is/mjCHlNo3IP+w+IBCAPxF8wPPMnohrh5nja7T1zsv17I1T9bWp5+T0PWwlBYD0CD7geV5pWlVaElL0Tyf0q999mNP1xVhsCgC5oOYDnueVplWZzivpja2kANA/Vj7geV5oWpVrp1O2kgJAdgQf8Lxs211Dsn9ba66dTkcMKWMrKQBkQfABz/NC06pcUzrfmzWOwAMAsiD4gC+43bQq15ROJDzI1nEAQBBQcArfcLNpFeeVAIB1CD7gK24dwNZfp1OKTAHAHNIuQI7cTv0AQFCw8gGYwHklAFA4gg/AJCtTPz1xg0AGQNEh+Chy3Pzc48YpvQDgBQQfRYybn3sytWpPnNJbSA0JASUArzNVcLpy5UpdcsklGjZsmEaOHKmrrrpKe/fuTbmmq6tLixYtUlVVlYYOHaq5c+eqs7PT0kGjcG4eUV/s7Dylt6mlXdNXbda1a7bptg17dO2abZq+ajO/TwCeYir42LJlixYtWqRt27bp1Vdf1cmTJ/U3f/M3OnbsWPKa22+/XRs3btRzzz2nLVu26MMPP9TVV19t+cCRv1xuft99oUUv7P5/at53yNaj6k8fU/O+Q3ppzwHHfqZb7Dqll4ASgF+YSrs0NTWl/Pnpp5/WyJEjtWvXLl122WWKRqN68skntX79el1++eWSpLVr12rcuHHatm2bpk6dat3Ikbdcbn6Hjp3Q7b94S5L9qZhiS//YcUpvtoAypFOrKTPqI6RgALiuoD4f0WhUkjRixKmujrt27dLJkyfV2NiYvGbs2LEaPXq0mpub035Gd3e3YrFYyhfsZfboeTufnIvxad2OU3rtWk0BADvkHXzE43EtXrxY06ZN0/jx4yVJHR0dKisr0/Dhw1Oura6uVkdHR9rPWblypcLhcPKrtrY23yEhR2aPni+0DiETO2sfvMyOU3rtWE0BALvkHXwsWrRILS0t2rBhQ0EDWLp0qaLRaPJr//79BX0esst280vHjifnYn1at+OUXjtWUwDALnkFH7fccotefvllvfbaazr77LOTr0ciEZ04cUJHjhxJub6zs1ORSCTtZ5WXl6uysjLlq5g5UXjZ380vGyufnIv5ad3qVu12rKYAgF1MFZwahqFbb71VL7zwgl5//XXV1dWlvH/xxRdr4MCB2rRpk+bOnStJ2rt3rz744AM1NDRYN+qAcrLwMnHz6/3zsrHyybnYn9atbNXOwXcA/CRkGEbOj9Y333yz1q9fr5deekl/9Vd/lXw9HA5r0KBBkqSFCxfq17/+tZ5++mlVVlbq1ltvlST953/+Z04/IxaLKRwOKxqNFtUqSKamU4lbhV0HlyUaUnXEunTPy7/X4WMn016XODJ+652XW3YD64kbmr5qc9Zj6q38mUFXbDuHAHiHmfu3qeAjFEp/A1i7dq2uu+46SaeajH3rW9/Ss88+q+7ubl155ZX6l3/5l4xpl0IG7yYru0gmbsKZViCcugknAiAp/ZOzHQGQGz8z6OhwCsANtgUfTvBD8GH102XzvkO6ds22rNc9e+NUyw40y8SNJ2ee1gHA/8zcvznbxSQ7zuTwUuGlG0fGzxxfo8vHVuv/NP9R7x8+rnNGDNbXGs5V2YCC2tAAADyK4MMEu7pIeq3w0soj49PpnRb4+NgJ3fOr1JWP/721jZUPAAgogg8TzPSlMHPzTmyTzFZ4GYRtkulSLOlYcborAMCbWNc2wa70iB1Np7woUyv1dILc4RQAih3Bhwl2pkdmjq/RTZfVqfeGolBIuumyOt8//feXssokqB1OAaDYkXb5i1y2J9qZHmlqadcTv2nr87lxQ3riN226aPQZng1Acpm7bCmr/gSxwykAFDOCD+W+1dOuLpK5rAp49Tj0XOeukAAiqB1OAaBYFX3axeyR7lafySH594A1M3OXTwDBeSQAEExFvfKR79ZZq3theKnPR67Mzl22lFVvQSq0BQCkKuqVj0JWHBK9MOZMOEsNY6oKukF6rc9HLszOndmTdAtZSQIAeFtRr3x4ZcXBj30+8pm7TCfp1oQrtGzWOJ0xpJzzSACgCBR18OGVFQc/Hoee79y50b4dAOAtRZ12Saw4ZLrtOVnwaEchq50KmTsrU1YAAP8p6pUPr604+GlVwGtzBwDwj5BhGJ7qXW3mSF6rOH2key5NufzC6bkDAHiTmfs3wcdfOBUQBPFmbeXcBSkwA4BiQvDhUYmmXL0nPHFr9WJth5OCGJgBQLEwc/8u6oJTJ2VryiUV9wmuZjvNAgD8i+DDIX5toe4EAjMAKC4EHw6xo6FZT9xQ875DemnPATXvO+TbmzOBGQAUl6LeauskqxuaBak+wiudZgEAzmDlwyFWNjQLWn2EVzrNAgCcQfDhkP4OVjPTlCuI9RHZAjNJOmPwQE+dbQMAyB/Bh4OsaKHulfoIK+tNEoFZf5/w8fGTerW1I++fAQDwDmo+HFZoC3Uv1EfYUW8yoz6i4YMH6sjxk2nfD+nUis6M+ghNxwDA51j5cEEhB6u5XR9hV73JjrbDGQMPiR0vABAkBB8eky2d4eZJvHbWm3hhRQcA4AzSLh6SSzrDzdNkzdSbNIypMvXZbq/oAACcw8qHR5hJZ1hRuJoPO1cn3FzRAQA4i5UPD8iWzkhXbFlo4Wo+7FydcHNFBwDgLFY+PCDf7bOFFK7mw+7VCbdWdAAAzmLlwwP8UmzpxOqEGys6AABnEXwUqCduFHyj9FOxZWJ1ondhbMTCc2USKzoAgGAi+CiAVc22EumMjmhX2rqPkE7d3L1SbMnqBACgENR85MnKZltWnfviJKfrTQAAwUHwkQc7mm1RbAkAKBakXfJgV7Mt0hkAgGJA8JGHXHedvPKX1IuZAIJiSwBA0BF85CHXXSc/b35fP29+v+ATXyVrdtUAAOAFBB95yLY7pbdEEWq+tRt2HGEPAIBbKDjNQ3+7U9Ip5MRXu46wBwDALQQfecq0OyWTTC3Se+uJG2red0gv7Tmg3777kb7/S3uOsAcAwC2kXQpw+u6UV1ra9fPm97N+T3/FqunSK/0p5Ah7AADcQvBRoNN3p+QSfGQqVk2kV/JZw3D7zBcAAMwg7WKRQk587a9pWS68cOYLAAC5IviwSCEt0rM1Lcsk1yPsT68jad53iBoRAICrSLtYKN8TX/NJm+R65gvbdAEAXkPwYbF8WqTnkzbJ5Qj7THUkhfYdAQCgEAQfNjDbIj1b07KQpOrKcv3wqxP00SfdOQU02Q6/C+nUNt0Z9RE6pQIAHEXNhwfkUi/y/S+dr2mfPTPnI+zNHH4HAICTCD48IlPTski4Iq/0SK51JGzTBQA4jbSLh+RTL5JJrnUkbNMFADjNtpWPxx57TOeee64qKio0ZcoU7dixw64fFSiJepFc0yuZFNJ3BAAAO9kSfPzrv/6rlixZouXLl2v37t268MILdeWVV+rgwYN2/DikUUjfEQAA7GRL8PHQQw/pxhtv1PXXX6/6+no9/vjjGjx4sJ566ik7fhwysLqOBAAAK1he83HixAnt2rVLS5cuTb5WUlKixsZGNTc3W/3jkIWVdSQAAFjB8uDjo48+Uk9Pj6qrq1Ner66u1h/+8Ic+13d3d6u7uzv551gsZvWQip7ZviMAANjJ9a22K1euVDgcTn7V1ta6PSQAAGAjy4OPM888U6Wlpers7Ex5vbOzU5FIpM/1S5cuVTQaTX7t37/f6iEBAAAPsTz4KCsr08UXX6xNmzYlX4vH49q0aZMaGhr6XF9eXq7KysqULwAAEFy2NBlbsmSJFixYoEmTJmny5Ml6+OGHdezYMV1//fV2/DgAAOAjtgQff/d3f6f/+Z//0d13362Ojg5NmDBBTU1NfYpQAQBA8QkZhpHu4FPXxGIxhcNhRaNRUjAAAPiEmft30Zzt0hM36HUBAIAHFEXw0dTSrhUbW1OOmK8JV2j57Hq6fAIA4DDX+3zYramlXQvX7U4JPCSpI9qlhet2q6ml3dHx9MQNNe87pJf2HFDzvkPqiXsq6wUAgO0CvfLREze0YmOr0t3eDZ06YG3FxlbNqI84koJhBQYAgICvfOxoO9xnxeN0hqT2aJd2tB3OeI1VKxVeW4EBAMAtgV75OHg0c+CRy3VWrVR4bQUGAAA3BXrlY+SwiuwXZbjOypUKK1ZgAAAIikAHH5PrRqgmXKFMawkhnVrJmFw3IuX1bCsV0qmVilxTMIWuwAAAECSBDj5KS0JaPrtekvoEIIk/L59d3yfVYfVKRSErMAAABE2ggw9Jmjm+RqvnT1QknHpjj4QrtHr+xLS1G1avVOS7AgMAQBAFuuA0Yeb4Gs2oj+Tc4dTqlYrECszCdbsVklLSOf2twAAAEESBX/lIKC0JqWFMleZMOEsNY6r6vdHbsVKRzwoMAABBVBQrH2bZtVJhdgUGAIAg4lTbftCRFACA3HCqrUVYqQAAwHoEH1kkakUAAIA1iqbgFAAAeAPBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTt1fvREzc41wUAAIsRfGTAibYAANiDtEsaTS3tWrhud0rgIUkd0S4tXLdbTS3tLo0MAAD/I/jopSduaMXGVhlp3ku8tmJjq3ri6a4AAADZEHz0sqPtcJ8Vj9MZktqjXdrRdti5QQEAECAEH70cPJo58MjnOgAAkIrgo5eRwyosvQ4AAKQi+Ohlct0I1YQrlGlDbUindr1Mrhvh5LAAAAgMgo9eSktCWj67XpL6BCCJPy+fXU+/DwAA8kTwkcbM8TVaPX+iIuHU1EokXKHV8yfS5wMAgALQZCyDmeNrNKM+QodTAAAsRvDRj9KSkBrGVLk9DAAAAoW0CwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcBTBBwAAcJTnOpwahiFJisViLo8EAADkKnHfTtzH++O54OPo0aOSpNraWpdHAgAAzDp69KjC4XC/14SMXEIUB8XjcX344YcaNmyYQiFrDnGLxWKqra3V/v37VVlZaclnoi/m2TnMtXOYa2cwz86xa64Nw9DRo0c1atQolZT0X9XhuZWPkpISnX322bZ8dmVlJf+ndgDz7Bzm2jnMtTOYZ+fYMdfZVjwSKDgFAACOIvgAAACOKorgo7y8XMuXL1d5ebnbQwk05tk5zLVzmGtnMM/O8cJce67gFAAABFtRrHwAAADvIPgAAACOIvgAAACOIvgAAACOCnzw8dhjj+ncc89VRUWFpkyZoh07drg9JN9buXKlLrnkEg0bNkwjR47UVVddpb1796Zc09XVpUWLFqmqqkpDhw7V3Llz1dnZ6dKIg+GBBx5QKBTS4sWLk68xz9Y5cOCA5s+fr6qqKg0aNEgXXHCB3njjjeT7hmHo7rvvVk1NjQYNGqTGxka9++67Lo7Yn3p6erRs2TLV1dVp0KBBGjNmjO65556U80CYa/N+85vfaPbs2Ro1apRCoZBefPHFlPdzmdPDhw9r3rx5qqys1PDhw3XDDTfok08+sWfARoBt2LDBKCsrM5566inj97//vXHjjTcaw4cPNzo7O90emq9deeWVxtq1a42WlhZjz549xt/+7d8ao0ePNj755JPkNd/4xjeM2tpaY9OmTcYbb7xhTJ061bj00ktdHLW/7dixwzj33HONz3/+88Ztt92WfJ15tsbhw4eNc845x7juuuuM7du3G++9957x7//+78Z///d/J6954IEHjHA4bLz44ovGW2+9ZXzpS18y6urqjD/96U8ujtx/7rvvPqOqqsp4+eWXjba2NuO5554zhg4davz4xz9OXsNcm/frX//a+O53v2s8//zzhiTjhRdeSHk/lzmdOXOmceGFFxrbtm0z/uM//sP47Gc/a1x77bW2jDfQwcfkyZONRYsWJf/c09NjjBo1yli5cqWLowqegwcPGpKMLVu2GIZhGEeOHDEGDhxoPPfcc8lr3n77bUOS0dzc7NYwfevo0aPGeeedZ7z66qvGX//1XyeDD+bZOnfeeacxffr0jO/H43EjEokY//zP/5x87ciRI0Z5ebnx7LPPOjHEwJg1a5bx9a9/PeW1q6++2pg3b55hGMy1FXoHH7nMaWtrqyHJ2LlzZ/KaV155xQiFQsaBAwcsH2Ng0y4nTpzQrl271NjYmHytpKREjY2Nam5udnFkwRONRiVJI0aMkCTt2rVLJ0+eTJn7sWPHavTo0cx9HhYtWqRZs2alzKfEPFvpl7/8pSZNmqSvfOUrGjlypC666CKtWbMm+X5bW5s6OjpS5jocDmvKlCnMtUmXXnqpNm3apHfeeUeS9NZbb2nr1q36whe+IIm5tkMuc9rc3Kzhw4dr0qRJyWsaGxtVUlKi7du3Wz4mzx0sZ5WPPvpIPT09qq6uTnm9urpaf/jDH1waVfDE43EtXrxY06ZN0/jx4yVJHR0dKisr0/Dhw1Oura6uVkdHhwuj9K8NGzZo9+7d2rlzZ5/3mGfrvPfee1q9erWWLFmi73znO9q5c6e++c1vqqysTAsWLEjOZ7p/T5hrc+666y7FYjGNHTtWpaWl6unp0X333ad58+ZJEnNtg1zmtKOjQyNHjkx5f8CAARoxYoQt8x7Y4APOWLRokVpaWrR161a3hxI4+/fv12233aZXX31VFRUVbg8n0OLxuCZNmqT7779fknTRRReppaVFjz/+uBYsWODy6ILlF7/4hZ555hmtX79e559/vvbs2aPFixdr1KhRzHURCWza5cwzz1RpaWmfyv/Ozk5FIhGXRhUst9xyi15++WW99tprOvvss5OvRyIRnThxQkeOHEm5nrk3Z9euXTp48KAmTpyoAQMGaMCAAdqyZYseeeQRDRgwQNXV1cyzRWpqalRfX5/y2rhx4/TBBx9IUnI++fekcN/+9rd111136ZprrtEFF1ygr33ta7r99tu1cuVKScy1HXKZ00gkooMHD6a8/+c//1mHDx+2Zd4DG3yUlZXp4osv1qZNm5KvxeNxbdq0SQ0NDS6OzP8Mw9Att9yiF154QZs3b1ZdXV3K+xdffLEGDhyYMvd79+7VBx98wNybcMUVV+h3v/ud9uzZk/yaNGmS5s2bl/zfzLM1pk2b1me7+DvvvKNzzjlHklRXV6dIJJIy17FYTNu3b2euTTp+/LhKSlJvPaWlpYrH45KYazvkMqcNDQ06cuSIdu3albxm8+bNisfjmjJlivWDsryE1UM2bNhglJeXG08//bTR2tpq3HTTTcbw4cONjo4Ot4fmawsXLjTC4bDx+uuvG+3t7cmv48ePJ6/5xje+YYwePdrYvHmz8cYbbxgNDQ1GQ0ODi6MOhtN3uxgG82yVHTt2GAMGDDDuu+8+49133zWeeeYZY/Dgwca6deuS1zzwwAPG8OHDjZdeesn4r//6L2POnDls/8zDggULjLPOOiu51fb55583zjzzTOOOO+5IXsNcm3f06FHjzTffNN58801DkvHQQw8Zb775pvH+++8bhpHbnM6cOdO46KKLjO3btxtbt241zjvvPLba5uvRRx81Ro8ebZSVlRmTJ082tm3b5vaQfE9S2q+1a9cmr/nTn/5k3HzzzcYZZ5xhDB482Pjyl79stLe3uzfogOgdfDDP1tm4caMxfvx4o7y83Bg7dqzxxBNPpLwfj8eNZcuWGdXV1UZ5eblxxRVXGHv37nVptP4Vi8WM2267zRg9erRRUVFhfOYznzG++93vGt3d3clrmGvzXnvttbT/Li9YsMAwjNzm9NChQ8a1115rDB061KisrDSuv/564+jRo7aMN2QYp7WVAwAAsFlgaz4AAIA3EXwAAABHEXwAAABHEXwAAABHEXwAAABHEXwAAABHEXwAAABHEXwAAABHEXwAAABHEXwAAABHEXwAAABHEXwAAABH/X+wks6z9XXNoQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:,0],X[:,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Demean：数据均值归零"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def demean(X):\n",
    "    return X-np.mean(X,axis=0)#减去各个特征的平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_demean=demean(X)#使得各个特征的数据均值都为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x2f7b38006a0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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LbfoySefVHl5udfDCZwzvB4ATrn11lu1aNGiAc8599xztWXLFjU3N/fbN2LatGm64YYb9MQTTygSifSrJo8/jkQito7bj7K91nGHDh3S5ZdfrksuuaRfkSzXunCjR4/WoEGDUl5HrqE9li1bpl/84hd66aWXNH78+MTxSCSi7u5uHTt2LOnTPtc+Nzt27NDhw4c1derUxLGenh699NJLevDBB/WrX/2K61wIr4tkkJs//vGP1q5duxJfv/rVryxJ1k9/+lPrwIEDlmV9VODZ3d2d+L7Vq1dT4JmH9957zzrvvPOs6667zvrf//3ffs9zre0xffp0a9myZYnHPT091rhx4yimLVBvb6/V0NBgjR071vrd737X7/l4kedPf/rTxLE9e/ZQ5JmjWCyW9O/yrl27rGnTplkLFy60du3axXUuEIGKz+3fv7/fqp9jx45ZVVVV1pe+9CWrtbXV2rBhgzV06FDrkUce8W6gPvTee+9ZH/vYx6zPfvaz1nvvvWe1tbUlvuK41vbYsGGDVVZWZv34xz+2du/ebd14443WiBEjrPb2dq+H5mtLly61wuGw9d///d9J//9++OGHiXNuuukma8KECdaWLVus3/72t1Z9fb1VX1/v4aiD4fRVP5bFdS4EgYrPpQpULMuyXn/9dWvWrFlWWVmZNW7cOOvuu+/2ZoA+9vjjj1uSUn6djmttjwceeMCaMGGCVVpaak2fPt3atm2b10PyvXT//z7++OOJc/7yl79YX//6162RI0daQ4cOtf7u7/4uKRhHfvoGKlzn/IUsy7JczzcBAABkgVU/AADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWAQqAADAWP8fRnFJjQeI7F8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X_demean[:,0],X_demean[:,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "梯度上升法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(w,x):#目标函数（VAr）\n",
    "    return np.sum(x.dot(w)**2)/len(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def df_math(w,x):#梯度函数\n",
    "    return x.T.dot(x.dot(w))*2./len(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def df_debug(w,x,epsilon=0.0001):#梯度调试\n",
    "    res=np.empty(len(w))\n",
    "    for i in range(len(w)):\n",
    "        w_1=w.copy()\n",
    "        w_1[i]+=epsilon\n",
    "        w_2=w.copy()\n",
    "        w_2[i]-=epsilon\n",
    "        res[i]=(f(w_1,x)-f(w_2,x))/(2*epsilon)\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def direction(w):#计算单位向量\n",
    "    return w/np.linalg.norm(w)#向量/向量的模---->使其模长为1\n",
    "def gradient_ascent(df,x,initial_w,eta,n_iters=1e4,epsilon=1e-8):#梯度上升函数\n",
    "    w=direction(initial_w)#使初始向量为方向向量，模长为1\n",
    "    cur_iter=0\n",
    "    while cur_iter<n_iters:\n",
    "        gradient=df(w,x)\n",
    "        last_w=w\n",
    "        w=w+eta*gradient\n",
    "        w=direction(w)#向量转变成方向向量，模长为1\n",
    "        \n",
    "        if (abs(f(w,x)-f(last_w,x))<epsilon):\n",
    "            break\n",
    "        cur_iter+=1\n",
    "    return w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"\n",
    "注意1：每次计算单位方向\n",
    "注意2：相比于梯度下降，梯度上升w初始值不能为0\n",
    "注意3：不能使用StandardScaler标准化数据\n",
    "\"\"\"\n",
    "initial_w=np.random.random(X.shape[1])#X的特征数量个\n",
    "eta=0.001\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.79232732, 0.61009624])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gradient_ascent(df_debug,X_demean,initial_w,eta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.79232732, 0.61009624])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gradient_ascent(df_math,X_demean,initial_w,eta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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9U6fkuctWLBAZ511lnr37q3jjjtOl156qbZu3drumMbGRlVWVqpfv3465phjNHnyZNXX1zt0xv5w1113KRAI6IYbbmh7juucPoKKh910000aMGBAp+cbGhp00UUX6YQTTtCGDRv0s5/9TLfffrseffRRB87Su7Zs2aLW1lY98sgjevvtt7V48WI9/PDDuvnmm9uO4Vqb45lnntHs2bNVVVWljRs36swzz9SECRO0Z88ep0/N09auXavKykqtW7dOq1ev1pEjR3TRRRfp0KFDbcfMmjVLK1eu1LPPPqu1a9dq9+7duuyyyxw8a297/fXX9cgjj+iMM85o9zzXOQMGPOm///u/jSFDhhhvv/22Icn461//2vbaL37xC6Nv375GU1NT23Nz5swxTjvtNAfO1F8WLVpklJWVtT3mWptj1KhRRmVlZdvjlpYWY8CAAcaCBQscPCv/2bNnjyHJWLt2rWEYhnHgwAGje/fuxrPPPtt2zDvvvGNIMqqrq506Tc86ePCgccoppxirV682zjvvPOP66683DIPrnClGVDyovr5e06dP169+9Sv17Nmz0+vV1dUaN26c8vLy2p6bMGGCtm7dqv3799t5qr4TDodVVFTU9phrnbnm5mZt2LBB48ePb3suJydH48ePV3V1tYNn5j/hcFiS2v4f3rBhg44cOdLu2g8ZMkTHH3881z4NlZWVuvjii9tdT4nrnCmCiscYhqGpU6fq2muv1ciRI2MeU1dXp+Li4nbPRR/X1dVZfo5+tW3bNj3wwAP6/ve/3/Yc1zpzn3zyiVpaWmJeR66heVpbW3XDDTdozJgxGjp0qKTI/6N5eXnq06dPu2O59qlbsWKFNm7cqAULFnR6jeucGYKKS8ydO1eBQKDLP1u2bNEDDzyggwcPat68eU6fsmcle62PtmvXLk2cOFHf/OY3NX36dIfOHEhfZWWlampqtGLFCqdPxXd27typ66+/Xk8++aQKCgqcPh3f6eb0CSDixhtv1NSpU7s85qSTTtKaNWtUXV3dad+IkSNH6uqrr9YTTzyhUCjUqZo8+jgUCpl63l6U7LWO2r17t84//3ydc845nYpkudaZ69+/v3Jzc2NeR66hOWbOnKkXXnhBL7/8sgYNGtT2fCgUUnNzsw4cONDu0z7XPjUbNmzQnj17NHz48LbnWlpa9PLLL+vBBx/UH/7wB65zJpwukkFq/va3vxlvvfVW258//OEPhiTj17/+tbFz507DML4o8Gxubm77unnz5lHgmYaPPvrIOOWUU4wrrrjC+Oyzzzq9zrU2x6hRo4yZM2e2PW5paTEGDhxIMW2GWltbjcrKSmPAgAHGu+++2+n1aJHnr3/967bntmzZQpFnihoaGtr9u/zWW28ZI0eONKZMmWK89dZbXOcMEVQ8bseOHZ1W/Rw4cMAoLi42vv3tbxs1NTXGihUrjJ49exqPPPKIcyfqQR999JFx8sknG1/96leNjz76yKitrW37E8W1NseKFSuM/Px84/HHHzc2b95sXHPNNUafPn2Muro6p0/N02bMmGEEg0Hjz3/+c7v/fw8fPtx2zLXXXmscf/zxxpo1a4y//OUvRkVFhVFRUeHgWfvD0at+DIPrnAmCisfFCiqGYRhvvPGGMXbsWCM/P98YOHCgcddddzlzgh62bNkyQ1LMP0fjWpvjgQceMI4//ngjLy/PGDVqlLFu3TqnT8nz4v3/u2zZsrZjPv30U+MHP/iB0bdvX6Nnz57G17/+9XZhHOnpGFS4zukLGIZh2D7fBAAAkARW/QAAANciqAAAANciqAAAANciqAAAANciqAAAANciqAAAANciqAAAANciqAAAANciqAAAANciqAAAANciqAAAANciqAAAANf6/3353GfzRzf7AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "w=gradient_ascent(df_math,X_demean,initial_w,eta)\n",
    "plt.scatter(X_demean[:,0],X_demean[:,1])\n",
    "\"\"\"映射到此轴，为1个主成分【第一主成分】\"\"\"\n",
    "plt.plot([0,w[0]*30],[0,w[1]*30],color=\"red\")#(0,0)到w方向绘图【方向放大30倍】\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用极端数据测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "X2=np.empty((100,2))\n",
    "X2[:,0]=np.random.uniform(0.,100.,size=100)\n",
    "X2[:,1]=0.75*X2[:,0]+3.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x2f7b3bbb850>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X2[:,0],X2[:,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2f7b3e75dc0>]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGfCAYAAABx3/noAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/1klEQVR4nO3deXiU1f3+8Xuyk5BMCEsmSICwKEREC4oGhQqGRSiiqD83UJSiYlBZVIhLI3UJonUDBaSttm5Y+lURxShKBZcgCFIIESo2CEIWNZCJYBYyz++PNANDJskkZPb367pyXZ1nzvNwGKhzc5bPMRmGYQgAAMAHhXi7AwAAAA0hqAAAAJ9FUAEAAD6LoAIAAHwWQQUAAPgsggoAAPBZBBUAAOCzCCoAAMBnEVQAAIDPIqgAAACfFeapX2j+/PnKzMzUnXfeqaefflqSVFFRodmzZ2v58uWqrKzUqFGj9PzzzysxMdHl59psNh04cECxsbEymUxu6j0AAGhNhmGovLxcnTt3VkhIw+MmHgkqmzZt0tKlS9W/f3+H6zNnztR7772nFStWyGw2a/r06ZowYYI+//xzl5994MABJScnt3aXAQCAB+zbt09dunRp8H23B5VffvlF1113nZYtW6aHH37Yfr2srEx/+ctf9Nprr2n48OGSpBdffFF9+/bVhg0bdN5557n0/NjYWEm1v9G4uLjW/w0AAIBWZ7ValZycbP8eb4jbg0pGRobGjh2r9PR0h6CyefNmVVdXKz093X6tT58+6tq1q3JzcxsMKpWVlaqsrLS/Li8vlyTFxcURVAAA8DNNLdtwa1BZvny5tmzZok2bNtV7r6ioSBEREYqPj3e4npiYqKKiogafmZ2drXnz5rV2VwEAgA9y266fffv26c4779Srr76qqKioVntuZmamysrK7D/79u1rtWcDAADf4ragsnnzZpWUlGjAgAEKCwtTWFiY1q1bp2effVZhYWFKTExUVVWVDh065HBfcXGxLBZLg8+NjIy0T/Mw3QMAQGBz29TPRRddpO3btztcu/HGG9WnTx/NmTNHycnJCg8P18cff6zLL79ckrRr1y7t3btXaWlp7uoWAADwI24LKrGxserXr5/DtZiYGLVv395+fcqUKZo1a5YSEhIUFxen22+/XWlpaS7v+AEAAIHNYwXfnHnqqacUEhKiyy+/3KHgGwAAgCSZDMMwvN2Jk2G1WmU2m1VWVsZ6FQAA/ISr39+c9QMAAHyWV6d+AACAb6qxGdpYUKqS8gp1io3SoJQEhYZ4/kw9ggoAAHCQk1eoeavyVVhWYb+WZI5S1rhUje6X5NG+MPUDAADscvIKNe2VLQ4hRZKKyio07ZUtyskr9Gh/CCoAAEBS7XTPvFX5crbLpu7avFX5qrF5bh8OQQUAAEiSNhaU1htJOZ4hqbCsQhsLSj3WJ9aoAAAQ5OoWzr7v4rROSXnDYaa1EVQAAAhizhbONqVTbOsdNtwUggoAAEGqbuGsqytOTJIs5tqtyp7CGhUAAIJQYwtnnamroJI1LtWj9VQYUQEAIAg1tXD2RBYv1VEhqAAAEIRcXRB7fVo3Xdwvicq0AACg9TVUCt/VBbEX90tSWs/2bu5lwwgqAAAEqMZK4Y9ItSjJHKWisgqn61S8sXDWGRbTAgAQgJoqhb8mv0hZ41IlHVsoW8dbC2edIagAABBgXC2FPyLVosUTB8hidpwGspijtHjiAI8vnHWGqR8AAAJMc0rhj+6XpBGpFqfrWHwBQQUAgADj6o6eunahISavLphtDFM/AAAEGFd39HiyFH5LMaICAICfqjpq08u5e/R96RF1S4jWpLTuiggL0aCUBL/Y0eMKggoAAH4oe3W+ln1aINtxSeSR1d9o6pAUZY5JVda4VE17ZYtMkkNY8aUdPa5g6gcAAD+TvTpfS9c7hhRJshnS0vUFyl6dr9H9knx+R48rTIZhuHoekU+yWq0ym80qKytTXFyct7sDAIBbVR21qc8D79cLKccLMUk7H7pYEWEhDVam9TZXv7+Z+gEAwI+8nLun0ZAi1Y6svJy7R1OG9PDpHT2uYOoHAAA/8n3pkVZt5+sYUQEAwAc1NGXTLSHapftdbefrCCoAAPiYxg4TnJTWXY+s/qbJNSqT0rq7v6MewNQPAAA+pKnDBNfuLNbUISmNPmPqkBRFhAXGV3xg/C4AAAgAVUdtuvet7U0eJnjP6L66ZWiKTty8E2KSbhlaW0clUDD1AwCAD1i97YDmvLld5RVHG2xz/GGCmWNSNXtkH6eVaQMJQQUAAC+qsRmasXyLVm0rcvmeusMEI8JCNGVID3d1zScQVAAA8JKcvELNfXO7Dh2pbtZ9/nCYYGshqAAA4AV1i2abUx7enw4TbC2BNZEFAIAfqLEZmrcqv1khpY6/HCbYWggqAAB42MaC0nrbj5uSEBPuV4cJthamfgAA8LC6xbCuiosK04bM9IDb0eMKggoAAG7krBR+cxfDzp9wRlCGFMnNUz+LFy9W//79FRcXp7i4OKWlpen999+3v19RUaGMjAy1b99ebdu21eWXX67i4mJ3dgkAAI/JySvUBY+t1TXLNujO5Vt1zbINuuCxtTp4uFJJ5ii5stLklqEpGtO/s9v76qvcGlS6dOmi+fPna/Pmzfrqq680fPhwjR8/Xjt27JAkzZw5U6tWrdKKFSu0bt06HThwQBMmTHBnlwAA8IjV2w7o1gZK4We89rUuObN2rUlDYaVtZJiev3ZAQFWZbQmTYRgtWXTcYgkJCXr88cd1xRVXqGPHjnrttdd0xRVXSJJ27typvn37Kjc3V+edd55Lz7NarTKbzSorK1NcXJw7uw4AgEtWbyvU9Ne3NHhwYN024wfGpuqh9xwPH4yPDteNg1M0fXivgN7d4+r3t8fWqNTU1GjFihU6fPiw0tLStHnzZlVXVys9Pd3epk+fPuratWujQaWyslKVlZX211ar1e19BwDAVTl5hbrttS2Ntqkrhd8uJkKfzRlebw1LIAeU5nJ7UNm+fbvS0tJUUVGhtm3b6q233lJqaqq2bt2qiIgIxcfHO7RPTExUUVHDZYSzs7M1b948N/caAIDmq6uP4qqS8gqFhpiU1rO9G3vl39weVE477TRt3bpVZWVl+uc//6kbbrhB69ata/HzMjMzNWvWLPtrq9Wq5OTk1ugqAADNdvyunp/KK5tVHyWYSuG3lNuDSkREhHr16iVJGjhwoDZt2qRnnnlGV111laqqqnTo0CGHUZXi4mJZLJYGnxcZGanIyEh3dxsAgCbl5BVq3qr8Zhdvk6SkICuF31Ie35Rts9lUWVmpgQMHKjw8XB9//LH9vV27dmnv3r1KS0vzdLcAAGiWurN6WhJSpOArhd9Sbh1RyczM1MUXX6yuXbuqvLxcr732mj755BN98MEHMpvNmjJlimbNmqWEhATFxcXp9ttvV1pamss7fgAA8IaTOasnxCQtuuY3QVcKv6XcGlRKSkp0/fXXq7CwUGazWf3799cHH3ygESNGSJKeeuophYSE6PLLL1dlZaVGjRql559/3p1dAgDgpLXkrJ46i64ZoDH9CSmu8ngdldZGHRUAgLudWAa/qOxXzfzHv5v1jCRzlLLGpTKS8j8+V0cFAAB/tHpboe5/O0+lR6rs1xKiI1y694GxfdUhNpL6KCeBoAIAQAOyV+dr6fqCetePDy3O1FWenXx+CuHkJAXnUYwAADRh9bYDTkNKU+piCbt6WgdBBQCA49TYDH2++yfdtcK1NSjt2jhOTljMUVo8cQBrUVoJUz8AAPxPSwq4/fa0TrrqnK6c1eMmBBUAAHSsgFtzt8IeqarhrB43YuoHABD0TqaA2znd27V6f3AMIyoAgKB0MocJ1jFJumFwSut3DnYEFQBA0MnJK9SD7+xQkbXypJ5z89AURYQxOeFOBBUAQFDJySvUra9sOenn3DI0RZljUluhR2gMQQUAEDRqbIbmvrm9Rfe2CQ/RBb06aFBKe90wuDsjKR5CUAEABI0N3/2sQ0eqm3VP3Ubjp646i9ooXkBQAQAEtOMXzf5rZ0mz77dwmKBXEVQAAAGrJQXcJOnSszprWJ9OFHDzAQQVAEBAamkBN0m68uxknd+rQ6v3Cc3HSiAAQMA5mQJu7aLDdV4PKs36CoIKACDgbCwobVEBN0nKnnAGUz0+hKACAAg4JeXNDylJ5igt4dRjn8MaFQBAwOkUG+VSuwfG9lWH2EgWzfowggoAIOAMSklQkjlKRWUVTtepmFS77Xjy+SmEEx/H1A8AwO/U2AzlfvezVm7dr9zvflaNzTGOhIaYlDWutrz9iTGk7nXWuFRCih9gRAUA4Fec1UZJclKUbXS/JC2eOKBeWwq4+ReTYRgt2b3lM6xWq8xms8rKyhQXF+ft7gAA3Kih2ih14yKLnSyGPb4yLWtRfIer39+MqAAA/EJjtVEM1YaVeavyNSLV4hBEQkNMSutJXRR/xRoVAIBfaKo2iiGpsKxCGwtKPdcpuB1BBQDgF1ytjdKSGirwXQQVAIBfcLU2iqvt4B9YowIA8BmNLXx1tTbKoJQEj/YZ7kVQAQD4hJy8Qj34zg4VWSvt1yxxkXrwktM1ul+SvTbKtFe2yCQ5hBVqowQupn4AAF6Xk1eoW1/Z4hBSJKnIWqlbX9minLxCScdqo1jMjtM7FnOU063J8H+MqAAAvKrGZmjum9sbbTP3ze32bcej+yVpRKqF2ihBgqACAPCaGpuhv372Xx06Ut1ou0NHqrXhu591fu8OkqiNEkwIKgAAr3BWCr8xuf/9yR5UEDwIKgAAj2uoFH7jmNoJRiymBQB4VGOl8BvDVE9wIqgAADyqqVL4zrSLDtd5PQgqwYigAgDwqJaUuM+ecAa7eoKUW4NKdna2zjnnHMXGxqpTp0669NJLtWvXLoc2FRUVysjIUPv27dW2bVtdfvnlKi4udme3AABe1JwS90nmKC2hPkpQc2tQWbdunTIyMrRhwwatWbNG1dXVGjlypA4fPmxvM3PmTK1atUorVqzQunXrdODAAU2YMMGd3QIAeFFdKfzGxkfi24Tr1d+fq8/mDCekBDmTYRjNXc/UYj/++KM6deqkdevWaejQoSorK1PHjh312muv6YorrpAk7dy5U3379lVubq7OO++8Jp9ptVplNptVVlamuLg4d/8WAACtoG7Xj+S8FD5VZgOfq9/fHl2jUlZWJklKSKg9MGrz5s2qrq5Wenq6vU2fPn3UtWtX5ebmOn1GZWWlrFarww8AwL9QCh+u8lgdFZvNphkzZuj8889Xv379JElFRUWKiIhQfHy8Q9vExEQVFRU5fU52drbmzZvn7u4CANyMUvhwhceCSkZGhvLy8vTZZ5+d1HMyMzM1a9Ys+2ur1ark5OST7R4AwAsohY+meCSoTJ8+Xe+++67Wr1+vLl262K9bLBZVVVXp0KFDDqMqxcXFslgsTp8VGRmpyMhId3cZAAD4ALeuUTEMQ9OnT9dbb72ltWvXKiUlxeH9gQMHKjw8XB9//LH92q5du7R3716lpaW5s2sAAMAPuHVEJSMjQ6+99ppWrlyp2NhY+7oTs9msNm3ayGw2a8qUKZo1a5YSEhIUFxen22+/XWlpaS7t+AEAAIHNrduTTSbnC6JefPFFTZ48WVJtwbfZs2fr9ddfV2VlpUaNGqXnn3++wamfE7E9GQAA/+Pq97dH66i4A0EFAAD/45N1VAAAAeLgQW/3AEGCoAIAcF1NjfTww1KPHtLu3d7uDYIAQQUA4JriYmn0aOmBB6RDh6TXX/d2jxAEPFbwDQDgx9aula67Tioqktq0kZ5/XvrfpgjAnQgqAABJUtVRm17O3aPvS4+oW0K0JqV1V4TJkP74R+mhhyTDkE4/XfrHP6TUVG93F0GCoAIA0CPv5evPnxXo+H2gy974TG+sX6Ru2zfVXrjpJmnhQik62judRFAiqABAkJv6901ak1/icG1IwRY99e6f1OFImaqi2ihi2QvSxIle6iGCGUEFAILYu1sPOISUUFuNZn72qm7LXaEQGfqmY3dNv3Su3r/6WkV4sZ8IXgQVAAgyNTZDGwtKVVT2q+59a7v9usX6k55dtUCDfsiXJL1y1sV6aPjvVRkeqZdz92jKkB7e6jKCGEEFAIJITl6h5q3KV2FZhcP1C7/bpCffe0oJv1pVHtFGmaNv17t9h9rf/770iKe7CkgiqABA0MjJK9S0V7bo+HNTwmqO6q71f9etG9+UJG1P7Knp4+fo+3adHe7tlsACWngHQQUAgkCNzdC8VfkOIeWUshItfOcxDTiwS5L04sBxyr7wJlWFhTvcazJJk9K6e66zwHEIKgAQBDYWlDpM94z4doMeX/204it+kTUyRndffKc+OG2w03t/f0GKIsIoZA7vIKgAQBAoKa8NKeE11cr814u6afM7kqStSb01/ZI5+iHe4vS+EamddN9YirvBewgqABAEOsVGKflQkRatfExnFn0rSfrz2eP12IWTVR0aXq99XFSYHr30DP3urM713gM8iaACAAGkbutxSXmFOsVGaVBKgkJDTBq05V96/6U71LbyiA5FtdVdY2bqo97nOtybEBOuB353uixxx+4DvI2gAgABwtnW427RIfr7N/9Qt+Uvqa2kzZ376I7x92h/XCd7m7o48uhlZ2h0vyTPdhpoAkEFAAKAs63H3Uv3a9FLC9St+LvaC/fco5+uzpAt51vpuDBjMUcpa1wqIQU+iaACAH7O2dbjcfnr9OgHixRb9at+bhOnh//fXD2RPVejQkxKPzPZ6fQQ4IsIKgDg547fehxZXamsj5fp2n/nSJK+7HK67rjkbhXHdtD/KyhVWs/2Cg0xKa1ne292GXAZQQUA/Fzd1uOeP+/TopWPqe+Pe2STSYvS/p+eueBa1YSEOrQD/AlBBQD8XKfYKF2Wt1YPf/i8Yqor9GN0vGb+brY+S/lNvXaAvyGoAICfcLr1+NcjOvfhu5T23kuSpC+69ted4+7Sj20T7PeZVLtgdlBKgvMHAz6MoAIAfsDZ1uPBFUVa+u4CxX73Hxkmk54efI0WDb7KPtUjHdt6nDUulQWz8EsEFQDwcfW2HhuGrtz+kf64ZonaHK1URYdOivrHcvXt2EedTggzbD2GvyOoAIAPqzpq071v5dlDSnTVr3r4w+c1Yce/JEmfdv+Nsq+9V6t+e6FGh5g0ItXC1mMEFIIKAPionLxC3fvWdpUerpYk9Skp0HMr56tn6X7VmEL0pyETtfi8K2TUhGgjW48RoAgqAOCDHKZ7DEPX/jtHWR+9oMiaahW2ba87Lrlbm5L72duz9RiBiqACAD7m+EqzbSuPKDtnocbt/FSStLbH2Zo9dqYORpsd7mHrMQIVQQUAfExdpdnTi3Zr0TuPKeVgoapDQvX40Ou1bNBlMkwh9rZsPUagI6gAgI8psf6q6zev0n3/+osia47qh7iOuuOSe7TllL5O27P1GIGMoAIAvuTQIV2QeZvGf7RKkrSm17m6a8wMlbWJrde0fUyEHrmsH1uPEdAIKgDgBU6rzG7+SrrqKrUvKFB1aJiyf3uj/nr2JZKp/mhJQky4cjMvUkRYiJOnA4GDoAIAHlRjM7Ro7W69+HmBDv1au+1YhqEZO1brjg/+rJCj1VJKijY9+pxe3GqTSTpW6E3HKs0+etkZhBQEBYIKAHhITl6h5r65XYeOVNuvmX8t1xOrn9aI3V9KkopGjJXlH69ocHy8FverXzafSrMINgQVAHCz2lGUb/XUR986XB+w/xs9+84CdbH+qMrQMD0y/Pdac+Hl+izOrFBJo/slUWkWQY+gAgBulJNXqAffyVeR9dioiMmwaerGt3T3+r8r3FajgnZJmj5+rnYk9pSslfYqs5KoNIug59YJzvXr12vcuHHq3LmzTCaT3n77bYf3DcPQH/7wByUlJalNmzZKT0/Xt99+6/xhAOBn6qrLHh9S2h0p01/++Ufd+8mLCrfV6J2+QzXuhmdqQ8r/UGUWOMatQeXw4cM688wz9dxzzzl9f8GCBXr22We1ZMkSffnll4qJidGoUaNUUcH/SQH4t+Ory9Y5Z1+eVr94h4b/9ytVhEUoc9R03THubv0SGe1wL1VmgWPcOvVz8cUX6+KLL3b6nmEYevrpp3X//fdr/PjxkqS///3vSkxM1Ntvv62rr77anV0DALeo23b8+e4f7YtgTYZNt+Wu0KzPXlWoYdN3CV2UMX6OdnZKqXd/ElVmAQdeW6NSUFCgoqIipaen26+ZzWade+65ys3NbTCoVFZWqrKy0v7aarW6va8A4IqcvPq7dDocPqgn331SQ/d8LUn6v9OH6YGRt+lIRJt695tElVngRF4LKkVFRZKkxMREh+uJiYn295zJzs7WvHnz3No3AGiu1dsO6LbXvna4lvb9Nj2z6nF1OnxQv4ZF6g8jbtWKM9KdFnBrFx2u7AlnsO0YOIHf7frJzMzUrFmz7K+tVquSk5O92CMAwW71tkJNf/1YSAmx1ej2L97QHV8sV6hh03/ad1XG+Dn6tmO3eveao8J00wUpmj68NyMpgBNeCyoWi0WSVFxcrKSkY/+CKC4u1llnndXgfZGRkYqMjHR39wDAJTl5hbrttS321x1/KdUzq57Q4L3bJElvnDFCWSNuUUV4/QWyM9NP1fThvQgoQCO8FlRSUlJksVj08ccf24OJ1WrVl19+qWnTpnmrWwDQpKqjNr2cu0cFPx/Wyq0H7NcvKPhaT737J3U8ckiHw6N0/8jb9Fa/4fXuT6K6LOAytwaVX375Rbt377a/Ligo0NatW5WQkKCuXbtqxowZevjhh9W7d2+lpKTogQceUOfOnXXppZe6s1sA0GLZq/O17NMC2Y7bdxxqq9GMz15TRu4/FCJD33Tsrunj5+i79o7T0tOH9dL5vTpQXRZoBrcGla+++krDhg2zv65bW3LDDTfopZde0j333KPDhw/r5ptv1qFDh3TBBRcoJydHUVHUEADge7JX52vp+gKHaxbrT3pm1eM694cdkqRXzxqtPw6fqspwxynqJHOUZo44lYACNJPJMAyj6Wa+y2q1ymw2q6ysTHFxcd7uDoAAVXXUpj4PvO8wknLhd1/pyfeeVMKvVpVHtNG9o6ZrVepvnd6/ZOIApnqA47j6/e13u34AwJPqCri9sWmvPaSE1RzVXZ++rFu//D9JUl5iT2WMn6Pv23Wud3+ISVp0zW8IKUALEVQAoAHOCrh1tpZo4coFGnhgpyTppQG/U/awm1QZFuH0GYuuGaAx/QkpQEsRVADAiboDBY+fG0//9ks9sfopxVf8ImtkjO65+A7lnHa+0/vZ2QO0DoIKAJzgxAMFw2uqNeeTl/T7r1ZKkrYm9dbtl8zRvniLw30mSX+68kwlxbdhZw/QSggqAHCCjQWl9umeLoeKtOidx3RW4beSpL+cPV7zL5ys6tDwevfdPDRFEwZ28WhfgUBHUAGAE5SU14aUUbu+0OPvP6O4ysM6FNVWd42ZqY96n1uvfYhJmjokRZljUj3dVSDgEVQA4ASJESY9uGaJJm95V5K0pfNpuv2SOdpv7uTQbmRqJ52b0l6T0rorIizEG10FAh5BBQCOt3u3zp10lc7bUnt+z5JzL9cTQybpaOix/1yaJFnMUVo88WzWoQBuRlABgDpvvCFNnSpTebmq4tvplvQ79EnPcxx2/tTFkqxxqYQUwAMIKgCCSl0Bt5LyCnWKjardnVNZIc2cKS1dWtvoggsU8frruupQqHaeUEfFwrZjwKMIKgCChrMCbudW/ahl7z2uuP/kSyaTdO+90oMPSmFhGt1FGpFqqR9sGEkBPIagAiAoOCvgdumOf+mRD55TTHWFKhPaK3L569KIEQ73hYaYlNazvWc7C8COoAIgYNVN8xw4eEQPvnusgFtUdYXmrVmqq7avkSR90bW/Hr32Pq28KF2h3usuACcIKgACkrNpHknq9dNePbdyvk77aa9sMunZ86/Ws4Ovls0I1caCUkZPAB9DUAEQcJxN80jSFds/0kMfLlabo5UqiWmnO8fdpdxuZ9rfryv0BsB3EFQABJSqozbd+1aeQ0iJrvpVD61ZrMvz1kqS1nf/jWb9bpZ+imnncG+n2CgP9hSAKwgqAAJGTl6h7n1ru0oPV9uv9Skp0KKVj6lX6Q+qMYXoyQuu0/NpV8owHaskW1fAbVBKghd6DaAxBBUAAaHedI9h6Jp/f6Csj19Q1NEqFbVN0B2X3KONyf2c3k8BN8A3EVQA+L0am6F5q47t6mlbeUSPfrBIl3yzXpL0rx4DNXvsLJVGm+vd2z4mQo9c1o8CboCPIqgA8HsbC0rtu3tOL/5Oi1bOV8rBQh01hWjBb2/QskGXOUz11EmICVdu5kUcKAj4MIIKAL9XUl4hGYYmfr1aD6xdpsiao9of21G3j79HW07p6/Qek6RHLzuDkAL4OIIKAL+XpCo9t3K+xu76XJK0pte5umvMDJW1iXXenvN6AL9BUAHg3zZt0jlXXSVTQYGqQsL02IWT9Zezx9ee23Oc2KhQzRvXT0nxbTivB/AjBBUA/skwpGefle6+W6bqah05JVnXDp+hf3c+zaFZXRx5/IozGUEB/BCTswD8T2mpdNll0owZUnW1NGGCovO26dZ7rpHF7Fi0zWKO0uKJAwgpgJ9iRAWAf9mwQbrqKmnvXikiQvrTn6SMDMlk0uj4eI1ItWhjQalKyivUKTaKaR7AzxFUAPgHm0168kkpM1M6elTq2VP6xz+kAQMcmoWGmDhYEAggBBUAvu+nn6TJk6X33qt9fdVV0gsvSHFxXu0WAPcjqADwbZ99Jl19tbR/vxQZWbuAdurUert6AAQmFtMC8E02m5SdLV14YW1IOfVUaeNG6eabCSlAEGFEBYDvKSmRJk2SPvyw9vXEidLixVLbtt7tFwCPI6gA8C2ffCJde61UWCi1aSMtWiTdeCOjKECQYuoHgG+oqZH++EfpootqQ0pqqrRpk3TTTYQUIIgxogLA+4qKpOuuk9aurX19443SwoVSTIx3+wXA6wgqALzro49qQ0pJSW0wWby4dn0KAIipHwDecvSo9MAD0siRtSHljDOkr74ipABwwIgKALeqOmrTy7l79H3pEXVLiNaktO6KKC6sXTC7fn1to5tvlp5+unbxLAAcxyeCynPPPafHH39cRUVFOvPMM7Vw4UINGjTI290CcJKyV+dr2acFshnHrn266BU9n/O0oq0Ha7cbL1tWW9ANAJzw+tTPG2+8oVmzZikrK0tbtmzRmWeeqVGjRqmkpMTbXQNwErJX52vp+mMhJazmqOZ88pJe+keWoq0HVdSzr7RlCyEFQKO8HlSefPJJTZ06VTfeeKNSU1O1ZMkSRUdH669//avT9pWVlbJarQ4/AHxL1VGbln1aYH+dZP1Ry1/P1LQv/ylJ+tuAsbrwskdUldLTW10E4Ce8GlSqqqq0efNmpaen26+FhIQoPT1dubm5Tu/Jzs6W2Wy2/yQnJ3uquwBc9HLuHofpnhmfvaaz938ja0S0po2fq6wR01QRGqGXc/d4rY8A/INXg8pPP/2kmpoaJSYmOlxPTExUUVGR03syMzNVVlZm/9m3b58nugqgGb4vPeLw+uGLfq/3TjtfY298Vu/3uaDBdgBwIp9YTNsckZGRioyM9HY3ADSiW0K0w+vyyBhlXJrZZDsAOJFXR1Q6dOig0NBQFRcXO1wvLi6WxWLxUq8AnKxJad0V0kTV+xBTbTsAaIxXg0pERIQGDhyojz/+2H7NZrPp448/Vlpamhd7BuBkRISFaOqQlEbbTB2Soogwr6/nB+DjvD71M2vWLN1www06++yzNWjQID399NM6fPiwbrzxRm93DcAJqo7a9LcvCrRpz0HFRIRqwoAuGtyrg0KdDJ9kjkmVpHp1VEJMtSGl7n0AaIzJMAyj6WbutWjRInvBt7POOkvPPvuszj33XJfutVqtMpvNKisrU1xcnJt7CgSv7NX5emF9gU78D0ZMRKj+9P/O1Oh+SU7vc1qZlpEUIOi5+v3tE0HlZBBUAPd75L18h7ooziyZOKDBsAIAJ3L1+5t/1gBo1Ltb9zcZUiRp3qp81dj8+t89AHwQQQVAg3LyCjV9+VaX2haWVWhjQal7OwQg6Hh9MS0A31NjM7Thvz9r7v9tb9Z9JeUVbuoRgGBFUAHgICevUPNW5auwrPmho1NslBt6BCCYEVQASKodRVm09ls99dG3Lbo/yRylQSkJrdwrAMGOoAIEudqAslt//bxAZb9Wt/g5WeNSndZTAYCTQVABglhOXqHmvrldh460PKDERIbqT1c2XEcFAE4GQQUIUjl5hbr1lS0n9Yw7hvXUnSNOYyQFgNsQVIAgVGMzNPfN5u3oOV6SOUpZ41IZRQHgdgQVIIjU2AxtLCjV33P3tGi6Jz46XM9dM0Dn9WzPKAoAjyCoAEFi9bZC3b8yT6WHq1p0v0nS/Aln6PzeHVq3YwDQCIIKEASyV+dr6fqmy+A3xBIXqQcvOZ2pHgAeR1ABAliNzdDCj/9zUiFlZvqpmj68F1M9ALyCoAIEqNXbDui+t/N0sIVbj9tGhuoJth0D8DKCChCATnaqp21kmLY8MEIRYZxbCsC7+K8QEGBWbys8qZBikvTElf0JKQB8AiMqQACpsRm6f2Vei++nPgoAX0NQAQLIxoLSFm0/vnFwd4083aJBKQksmgXgUwgqQAApKa9o9j23DE1R5phUN/QGAE4eQQXwY3WVZkvKK9QpNkod2ka6fG+76DA9cukZGtO/sxt7CAAnh6AC+KmcvELNW5WvwrJjoyiWuEjFR4c3WR7/zot6646LejPNA8DnEVQAP5STV6hpr2yRccL1YmtlvWsnumVoimaOONVdXQOAVkVQAfxMjc3QvFX5TgOJodrtxebocEWFharIemy0pX1MhB4a309j+rOjB4D/IKgAfuD4tSg/lVc6TPecyJB06Ei1Xp0yQCEhJvv6FXb0APBHBBXAxzlbi+KKnw5XavxZp7ipVwDgGQQVwIc1tBbFFZ1io1q9PwDgaQQVwEc1thalMSZJFnPtVA8A+DuCCuBj6tajfL77p2ZP99StQMkal8p6FAABgaAC+JCWrkepY+GsHgABhqAC+IiWrkd5YGxfdYiNZGcPgIBEUAF8QEvWo9StRZl8fgrhBEDAIqgAXnRsPcqPzZruYS0KgGBBUAG85GTWo7AWBUCwIKgAHlQ3gvJRfpH+8vmeZt8/fVhPnd+rI2tRAAQNggrgISczglK3HmXmiNMIKACCCkEF8ICTqTDLehQAwYygArhRjc3QF7t/0uwV/25RSJFYjwIguIW468GPPPKIBg8erOjoaMXHxztts3fvXo0dO1bR0dHq1KmT7r77bh09etRdXQI8KievUAMfXqNJf92ow5U1zb5/+rBeen3qefpsznBCCoCg5bYRlaqqKl155ZVKS0vTX/7yl3rv19TUaOzYsbJYLPriiy9UWFio66+/XuHh4Xr00Ufd1S3AI3LyCnXrK1tadO+x9SinMtUDIOiZDMNo6Yi0S1566SXNmDFDhw4dcrj+/vvv63e/+50OHDigxMRESdKSJUs0Z84c/fjjj4qIiHD6vMrKSlVWVtpfW61WJScnq6ysTHFxcW77fQCuqrEZOn/+WhVZW7ZoVpIWTxzAKAqAgGa1WmU2m5v8/nbb1E9TcnNzdcYZZ9hDiiSNGjVKVqtVO3bsaPC+7Oxsmc1m+09ycrInugu4bGNBaYtCilQ7kkJIAYBjvLaYtqioyCGkSLK/LioqavC+zMxMzZo1y/66bkQF8BUl5c0PKTed310jUi3URwGAEzQrqMydO1ePPfZYo22++eYb9enT56Q61ZjIyEhFRka67flAc9UVcSspr1Cn2Ch1aOv638/2MRF65LJ+jKAAQAOaFVRmz56tyZMnN9qmR48eLj3LYrFo48aNDteKi4vt7wH+wFkRN0tcpOKjw3XoSHWj97aLDlNu5kWKCPPaDCwA+LxmBZWOHTuqY8eOrfILp6Wl6ZFHHlFJSYk6deokSVqzZo3i4uKUmpraKr8G4A5NlcEvtla6VDMle0J/QgoANMFta1T27t2r0tJS7d27VzU1Ndq6daskqVevXmrbtq1Gjhyp1NRUTZo0SQsWLFBRUZHuv/9+ZWRkMLUDn+VKGXxDtbt3zNHhklRvZCU+OlzzJ5zBdA8AuMBt25MnT56sv/3tb/Wu/+tf/9KFF14oSfr+++81bdo0ffLJJ4qJidENN9yg+fPnKyzM9fzk6vYm4GS1pAz+q1POlUxS7nc/SzKU1qODzuvZngWzAIKeq9/fbq+j4m4EFXhCjc3QBY+tbfaBgs9cfZbGn3WKm3oFAP7L5+uoAP5kY0Fpi0497hQb5YbeAEDw4FBCwAXNrY1SVwZ/UEqCezoEAEGCERXABc0ZGalbfZI1LpW1KABwkggqgAsGpSQoyRwlV2IHZfABoPUw9QP8z4kVZo8vZx8aYlLWuFRNe2WLTJLDzp+615TBB4DWR1BB0KuxGXr24//oz58W6HBVjf16kjlKWeNS7SMjo/slafHEAfUr0Z7QDgDQetiejKC2etsBzfzHv1V51Ob0fZNUbxqnsZEXAIBrXP3+ZkQFQSt7db6Wri9otI0had6qfI1ItThMA6X1bO+BHgIAWEyLoPTOlv1NhpQ6hWUV2lhQ6uYeAQCcYUQFQeeR9/K17FPXQkqd5tZRAQC0DkZUEFSyVzc/pEhUmAUAbyGoIGhUHbW1KKQkxIRTYRYAvISggqDxcu4e2Vqwx+3h8f3Y1QMAXkJQQdD4vvRIs++5ZWiKxvTv7IbeAABcwWJaBI1uCdEut40KD9GTV56lMf0p4gYA3sSICoLGpLTucmUG5/YLe2rHvNGEFADwAQQVBI2IsBBNHZLSaJupQ1I0e3Qf1qQAgI9g6gcBwdWy9pljUiVJyz4tcFhYG2KqDSl17wMAfANn/cDvrd5WqPtX5qn0cJX92okHCp6o6qhNL+fu0felR9QtIVqT0rorIowBRgDwFFe/vwkq8GuNndfj7EBBAIBvcPX7m39Cwi/V2Aw9teY/jZ7XU3egYE1LiqcAAHwCa1Tgd3LyCvXgOztUZK1ssm3dgYKcdgwA/omgAr+Sk1eoaa9sUXPGSDhQEAD8F1M/8Bs1NkPzVuU3K6RIHCgIAP6MoAK/sbGgVIVlzRsdaR8TwYGCAODHCCrwGy2ZwnmIAwUBwK+xRgU+p6Hibc2dwqk9UJCtyQDgzwgq8Ck5eYWatyrfYYqnrnjbiFSLksxRKiqraHSdSkJMuB4e349TjwEgAFDwDT6joR09dRM3iycOkCRNe2WLJDkNKzPTe2v68N5M9wCAj6PgG/xKYzt66q7NW5WvEakWLZ44QBaz4zRQkjlKSyYO0J3ppxJSACCAMPUDn9DUjh5Dx4q3je6XpBGpFpcOIQQA+DeCCrzixEMB46MjXLqvbudPaIiJarMAEAQIKvC47NX5WvZpgY4/gsfk4mAIxdsAILgQVOBRDZ123NSSbpMkizmK4m0AEGRYTAuPqTpq07JPGz7tuCF1gy1Z41JZhwIAQYagAo95OXePw3RPQ2KjHAf6LOYoLZ44QKP7UbwNAIKN24LKnj17NGXKFKWkpKhNmzbq2bOnsrKyVFVV5dBu27ZtGjJkiKKiopScnKwFCxa4q0vwsu9Lj7jU7tKzOuv1qefpmavP0utTz9Nnc4YTUgAgSLltjcrOnTtls9m0dOlS9erVS3l5eZo6daoOHz6sJ554QlJtsZeRI0cqPT1dS5Ys0fbt23XTTTcpPj5eN998s7u6Bg85sRR+crtol+7r3j6GHT0AAEkerkz7+OOPa/Hixfrvf/8rSVq8eLHuu+8+FRUVKSKidnvq3Llz9fbbb2vnzp0uPZPKtL6nxmZo0dpv9eLne3To12r79cTYSJX8UtnowtkQk7TzoYsVEcasJAAEMle/vz2666esrEwJCcd2beTm5mro0KH2kCJJo0aN0mOPPaaDBw+qXbt29Z5RWVmpyspK+2ur1ereTqNZcvIKNffN7Tp0pLreeyXllY2e0SNJU4ekEFIAAHYe+0bYvXu3Fi5cqFtuucV+raioSImJiQ7t6l4XFRU5fU52drbMZrP9Jzk52X2dRrOs3laoW1/Z4jSkSLXVZU2SYiJCdeLmnRBT7WnHmWNS3d5PAID/aPaIyty5c/XYY4812uabb75Rnz597K/379+v0aNH68orr9TUqVOb38vjZGZmatasWfbXVquVsOIDVm87oOmvf91kO0PS4aoavXzTIP2nuNxemXZSWndGUgAA9TQ7qMyePVuTJ09utE2PHj3s//vAgQMaNmyYBg8erBdeeMGhncViUXFxscO1utcWi8XpsyMjIxUZGdncbsONcvIKddtrTYeU45UeqdKUIT2abggACGrNDiodO3ZUx44dXWq7f/9+DRs2TAMHDtSLL76okBDHfzGnpaXpvvvuU3V1tcLDwyVJa9as0WmnneZ0fQp8R91ZPQU/H9bKrQeafT+l8AEArnDbYtr9+/frwgsvVLdu3fTEE0/oxx9/tL9XN1py7bXXat68eZoyZYrmzJmjvLw8PfPMM3rqqafc1S20gkfey9efPytosux9Q5IohQ8AcJHbgsqaNWu0e/du7d69W126dHF4r25HtNls1ocffqiMjAwNHDhQHTp00B/+8AdqqPiw3/9toz765semGzaCUvgAAFd5tI6KO1BHxXMeXpWvP3/e/LN66sRHh2v+hDOoMgsA8M06KvBfq7cVtjikmEzSncN76/aLejOSAgBoFoIKmlRjM3T/yrwW3//cNb/RmP6dW7FHAIBgQVBBkzYWlKr0cFXTDU+QZI5S1rhUpnoAAC1GUEGTSsormtX+ySvPVFJ8Gw1KSWCqBwBwUggqaFJzap5MHZKiCQO7NN0QAAAXULMcTRqUkqAkc9NhJb1vR903lrN6AACth6CCJoWGmJQ1LlWNTeL8/vwU/fmGQR7rEwAgOBBUgliNzVDudz9r5db9yv3uZ9XYGi6pM7pfkhZPHFBvZKV9TISev3aA7h/HSAoAoPWxRiVIrd5WqPtX5jns5mlql87ofkkakWrRxoJSlZRXqFNsFAtmAQBuRWXaIPTIezu07NM9Tt8zSVo8cQBbigEAbuXq9zdTP0HmkffyGwwpkmRImrcqv9FpIAAAPIWgEkRWbyvUsk+bLoNfWFahjQWlHugRAACNI6gEieaWwW9ukTcAANyBoBIkmlsGvzlF3gAAcBd2/QSoGpvhsDunyOr6CEn7mAgNSklwY+8AAHANQSUA5eQVat6qfBWWHQsnCTHhLt//0Ph+bDkGAPgEgkqAyckr1LRXtujEPTulh6tdun/qkO4a05+tyQAA30BQCSA1NkPzVuXXCymumjokhbN6AAA+haASQDYWlDpM9zQkISbCYWFt+5gIPTS+HyMpAACfQ1AJIK5uKX5gbF9ZzG0ogw8A8HkEFT924s6eDjGRLt1nMbdRWs/2bu4dAAAnj6Dip5zt7LHERSk+OlxlR6qdrlMxSbKYo9h6DADwGwQVP1NjM7Ro7bd66qNv671XbK2wBxST5BBW6iZ2ssalMs0DAPAbBBU/kpNXqAffyW+weJuh2kASHx2uyLAQFVkr7e9ZzFHKGpfKqcgAAL9CUPEDtaMou/XUR/9psq0h6eCRar36+3MVYjKxYBYA4NcIKj5u9bYDuu/t7Tp45Giz7vvpl0qNP+sUN/UKAADPIKj4sOzV+Vq6vqBF93KoIAAgEBBUfNTqbYUtCins7AEABBKCio+psRna8N3Puuf//t3iZ7CzBwAQKAgqPsRZbZTmsMRF6sFLTmdnDwAgYBBUvKyuuuya/CL99fM9LX7OzPRTNX14L0ZSAAABhaDiRSc7giJJSdRHAQAEMIKKl+TkFWraK1uclrp31YyLeun2i05lFAUAELAIKl5QddSme9/aflIh5ZahKZox4rRW6xMAAL6IoOJhOXmFuvetPJUerm7R/e1jIvTQ+H4a05+pHgBA4COoeNDJTPfEtwnXc9cN0Hk92jPVAwAIGgQVD6mxGZq3Kr/ZIaUuksy//Ayd36tDa3cLAACfFuLOh19yySXq2rWroqKilJSUpEmTJunAgQMObbZt26YhQ4YoKipKycnJWrBggTu75DUbC0pbtLvHYo7S4okD2NUDAAhKbh1RGTZsmO69914lJSVp//79uuuuu3TFFVfoiy++kCRZrVaNHDlS6enpWrJkibZv366bbrpJ8fHxuvnmm93ZNY8rKW9eSJlyfnelp1o49RgAENTcGlRmzpxp/9/dunXT3Llzdemll6q6ulrh4eF69dVXVVVVpb/+9a+KiIjQ6aefrq1bt+rJJ58MuKDi6iGBCTHhevSyMxhBAQBAbp76OV5paaleffVVDR48WOHh4ZKk3NxcDR06VBEREfZ2o0aN0q5du3Tw4EGnz6msrJTVanX48QeDUhKUZI5SY2Mj7WMitCEznZACAMD/uD2ozJkzRzExMWrfvr327t2rlStX2t8rKipSYmKiQ/u610VFRU6fl52dLbPZbP9JTk52X+dbUWiISVnjUiWpXlgx/e/nkcv6KSLMY9kRAACf1+xvxblz58pkMjX6s3PnTnv7u+++W19//bU+/PBDhYaG6vrrr5dhtLzUWWZmpsrKyuw/+/bta/GzPG10vyQtnjhAFrPjNBALZgEAcK7Za1Rmz56tyZMnN9qmR48e9v/doUMHdejQQaeeeqr69u2r5ORkbdiwQWlpabJYLCouLna4t+61xWJx+uzIyEhFRkY2t9s+Y3S/JI1ItWhjQalKyivUKTaKBbMAADSg2UGlY8eO6tixY4t+MZvNJql2nYkkpaWl6b777rMvrpWkNWvW6LTTTlO7du1a9Gv4g9AQk9J6tvd2NwAA8HluWxDx5ZdfatGiRdq6dau+//57rV27Vtdcc4169uyptLQ0SdK1116riIgITZkyRTt27NAbb7yhZ555RrNmzXJXt1pFjc1Q7nc/a+XW/cr97mfV2E7m1B4AANAQt21Pjo6O1ptvvqmsrCwdPnxYSUlJGj16tO6//3771I3ZbNaHH36ojIwMDRw4UB06dNAf/vAHn96anJNXqHmr8h2KtyWZo5Q1LpU1JgAAtDKTcTIrW32A1WqV2WxWWVmZ4uLi3PprNXRWT93qEhbEAgDgGle/v9kL66LGzuqpuzZvVT7TQAAAtCKCiouaOqvHkFRYVqGNBaWe6xQAAAGO05Mb8GtVjR5dna89Px9R9/bROrNLvEv3NfdMHwAA0DCCihNT/75Ja/JL7K8//VZ6WXtdutfVM30AAEDTCConODGkuMqk2gqzg1ISWr9TAAAEKdaoHOfXqhqXQoqzs3okKWtcKhVmAQBoRQSV4zy6Ot+ldm0iQh1ec1YPAADuwdTPcfb8fMSldgO6xitjWG/O6gEAwM0IKsfp3j5an37bdLuUDjGc1QMAgAcw9XOce8ektmo7AABwcggqx2kTEaoRqZ0abTMitVO9NSoAAMA9CConWHb9OQ2GlRGpnbTs+nM83CMAAIIXa1ScWHb9OfUq0947JpWRFAAAPIyg0oA2EaF66NIzvN0NAACCGlM/AADAZxFUAACAzyKoAAAAn0VQAQAAPougAgAAfBZBBQAA+CyCCgAA8FkEFQAA4LMIKgAAwGf5fWVawzAkSVar1cs9AQAArqr73q77Hm+I3weV8vJySVJycrKXewIAAJqrvLxcZrO5wfdNRlNRxsfZbDYdOHBAsbGxMplM3u5Og6xWq5KTk7Vv3z7FxcV5uztBh8/f+/gz8C4+f+/i86/PMAyVl5erc+fOCglpeCWK34+ohISEqEuXLt7uhsvi4uL4S+pFfP7ex5+Bd/H5exefv6PGRlLqsJgWAAD4LIIKAADwWQQVD4mMjFRWVpYiIyO93ZWgxOfvffwZeBefv3fx+bec3y+mBQAAgYsRFQAA4LMIKgAAwGcRVAAAgM8iqAAAAJ9FUAEAAD6LoOJBlZWVOuuss2QymbR161aH97Zt26YhQ4YoKipKycnJWrBggXc6GWD27NmjKVOmKCUlRW3atFHPnj2VlZWlqqoqh3Z8/u713HPPqXv37oqKitK5556rjRs3ertLASk7O1vnnHOOYmNj1alTJ1166aXatWuXQ5uKigplZGSoffv2atu2rS6//HIVFxd7qceBbf78+TKZTJoxY4b9Gp9/8xFUPOiee+5R586d6123Wq0aOXKkunXrps2bN+vxxx/Xgw8+qBdeeMELvQwsO3fulM1m09KlS7Vjxw499dRTWrJkie699157Gz5/93rjjTc0a9YsZWVlacuWLTrzzDM1atQolZSUeLtrAWfdunXKyMjQhg0btGbNGlVXV2vkyJE6fPiwvc3MmTO1atUqrVixQuvWrdOBAwc0YcIEL/Y6MG3atElLly5V//79Ha7z+beAAY9YvXq10adPH2PHjh2GJOPrr7+2v/f8888b7dq1MyorK+3X5syZY5x22mle6GngW7BggZGSkmJ/zefvXoMGDTIyMjLsr2tqaozOnTsb2dnZXuxVcCgpKTEkGevWrTMMwzAOHTpkhIeHGytWrLC3+eabbwxJRm5urre6GXDKy8uN3r17G2vWrDF++9vfGnfeeadhGHz+LcWIigcUFxdr6tSpevnllxUdHV3v/dzcXA0dOlQRERH2a6NGjdKuXbt08OBBT3Y1KJSVlSkhIcH+ms/ffaqqqrR582alp6fbr4WEhCg9PV25uble7FlwKCsrkyT73/fNmzerurra4c+jT58+6tq1K38erSgjI0Njx451+JwlPv+WIqi4mWEYmjx5sm699VadffbZTtsUFRUpMTHR4Vrd66KiIrf3MZjs3r1bCxcu1C233GK/xufvPj/99JNqamqcfr58tu5ls9k0Y8YMnX/++erXr5+k2r/PERERio+Pd2jLn0frWb58ubZs2aLs7Ox67/H5twxBpYXmzp0rk8nU6M/OnTu1cOFClZeXKzMz09tdDiiufv7H279/v0aPHq0rr7xSU6dO9VLPAc/IyMhQXl6eli9f7u2uBI19+/bpzjvv1KuvvqqoqChvdydghHm7A/5q9uzZmjx5cqNtevToobVr1yo3N7feQVRnn322rrvuOv3tb3+TxWKpt+q77rXFYmnVfgcKVz//OgcOHNCwYcM0ePDgeotk+fzdp0OHDgoNDXX6+fLZus/06dP17rvvav369erSpYv9usViUVVVlQ4dOuTwr3r+PFrH5s2bVVJSogEDBtiv1dTUaP369Vq0aJE++OADPv+W8PYimUD3/fffG9u3b7f/fPDBB4Yk45///Kexb98+wzCOLeasqqqy35eZmclizlbyww8/GL179zauvvpq4+jRo/Xe5/N3r0GDBhnTp0+3v66pqTFOOeUUFtO6gc1mMzIyMozOnTsb//nPf+q9X7eY85///Kf92s6dO1nM2UqsVqvDf++3b99unH322cbEiRON7du38/m3EEHFwwoKCurt+jl06JCRmJhoTJo0ycjLyzOWL19uREdHG0uXLvVeRwPEDz/8YPTq1cu46KKLjB9++MEoLCy0/9Th83ev5cuXG5GRkcZLL71k5OfnGzfffLMRHx9vFBUVebtrAWfatGmG2Ww2PvnkE4e/60eOHLG3ufXWW42uXbsaa9euNb766isjLS3NSEtL82KvA9vxu34Mg8+/JQgqHuYsqBiGYfz73/82LrjgAiMyMtI45ZRTjPnz53ungwHmxRdfNCQ5/Tken797LVy40OjatasRERFhDBo0yNiwYYO3uxSQGvq7/uKLL9rb/Prrr8Ztt91mtGvXzoiOjjYuu+wyh+CO1nViUOHzbz6TYRiGx+ebAAAAXMCuHwAA4LMIKgAAwGcRVAAAgM8iqAAAAJ9FUAEAAD6LoAIAAHwWQQUAAPgsggoAAPBZBBUAAOCzCCoAAMBnEVQAAIDP+v+s2Zm/nehNpgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X2_demean=demean(X2)\n",
    "w2=gradient_ascent(df_math,X2_demean,initial_w,eta)\n",
    "plt.scatter(X2_demean[:,0],X2_demean[:,1])\n",
    "plt.plot([0,w2[0]*30],[0,w2[1]*30],color=\"red\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
